package com.boatAnchorAssistant.pojo.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.boatAnchorAssistant.pojo.enums.alarm.AlarmStatusEnum;
import com.gitee.sunchenbin.mybatis.actable.annotation.Column;
import com.gitee.sunchenbin.mybatis.actable.annotation.TableComment;
import com.gitee.sunchenbin.mybatis.actable.constants.MySqlTypeConstant;
import lombok.Data;
import nirvana.core.domains.ann.AccEntity;
import nirvana.core.domains.entity.DomainBaseEntity;
import nirvana.core.domains.enums.EntityType;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @author anni.zhu
 * @author anni.zhu@king-v.com
 * Created in 2024/11/27 13:45
 * 报警推送日志
 */
@Data
@TableName(autoResultMap = true)
@AccEntity(value = "报警推送日志",type = EntityType.SERVICE_ENTITY)
@TableComment("报警推送日志")
public class AlarmPushLog extends DomainBaseEntity<AlarmPushLog> {

    /**
     * 报警区域
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "报警区域")
    private String areaId;

    /**
     * 报警区域名称
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "报警区域名称")
    private String areaName;

    /**
     * 设备编号
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "设备编号")
    private String camNo;

    /**
     * 值班等级
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "值班等级")
    private String dutyLevel;

    /**
     * 报警等级-数据字典
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "报警等级-数据字典")
    private String level;

    /**
     * 是否新报警
     */
    @Column(type = MySqlTypeConstant.BIT,
            comment = "是否新报警")
    private Boolean newAlarm;

    /**
     * 报警图片
     */
    @Column(type = MySqlTypeConstant.JSON,
            comment = "报警图片")
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> imageList;

    /**
     * 报警原因
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "报警原因")
    private String reason;

    /**
     * 报警海域
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "报警海域")
    private String region;

    /**
     * 备注
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "备注")
    private String remark;

    /**
     * 船舶状态
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "船舶状态")
    private String shipStatus;

    /**
     * 报警id
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "报警id")
    private String sid;

    /**
     * 报警时间
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "报警时间")
    private LocalDateTime time;

    /**
     * 当前船速
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "当前船速")
    private String speed;

    /**
     * 报警类型
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "报警类型")
    private String type;

    /**
     * 报警视频
     */
    @Column(type = MySqlTypeConstant.JSON,
            comment = "报警视频")
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> videoList;

    /**
     * 船舶地面航向
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "船舶地面航向")
    private String cog;

    /**
     * 船舶mmsi编号
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "船舶mmsi编号")
    private String mmsi;

    /**
     * 船舶名称
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "船舶名称")
    private String shipName;

    /**
     * 船舶相对地面速度
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "船舶相对地面速度")
    private String sog;

    /**
     * 船头航向
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "船头航向")
    private String trueHeading;

    /**
     * 报警船舶纬度
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "报警船舶纬度")
    private String myAlarmLat;

    /**
     * 报警船舶经度
     */
    @Column(type = MySqlTypeConstant.VARCHAR,
            comment = "报警船舶经度")
    private String myAlarmLon;

    /**
     * 报警id-对应我们真实的系统
     */
    @Column(type = MySqlTypeConstant.BIGINT,
            comment = "报警id-对应我们真实的系统")
    private Long alarmId;
}
